/*            Copyright(c) 2006-2008 Dave Sexton           *
 * http://www.codeplex.com/DocProject                      *
 * http://www.codeplex.com/DocProject/Project/License.aspx *
 ***********************************************************/
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml.XPath;

namespace DaveSexton.DocProject.Sandcastle.TopicManagement
{
	public interface ITopicHierarchy
	{
		Topic CurrentTopic { get; }

		TopicNode SelectedNode { get; set; }

		TopicNode FirstNode { get; }

		TopicNode GetNodeById(string id);

		void ForEachNode(Action<TopicNode> action);

		TopicNode FindTopic(TopicNode startAfter, Predicate<TopicNode> predicate);

		TopicNode FindTopic(Predicate<TopicNode> predicate);

		TopicNode FindTopic(IXPathNavigable element);

		IEnumerable<TopicNode> FindTopics(Predicate<TopicNode> predicate);

		TopicNode SelectNextTopic(TopicNode from);

		string CreateReferenceLink(TopicNode node);

		string CreateConceptualLink(TopicNode node);

		void SelectNextTopic(Predicate<TopicNode> predicate);

		void NotifyDroppedNodeInEditor();

		void Refresh();

		void SuspendLayout();

		void ResumeLayout(bool performLayout);

		void BeginUpdate();

		void EndUpdate();
	}
}
